package site.kason.netcamera.util;

import android.app.Activity;
import android.content.pm.PackageManager;
import android.os.Build;

public class PermissionManager {

    // 静态计数器，用于生成唯一请求码
    private static int REQUEST_CODE = 0;

    // 需要的权限列表
    private final String[] requiredPermissions;

    // 权限请求码
    private final int requestCode;

    // 宿主Activity
    private final Activity activity;


    //检查权限是否已授予
    public PermissionManager(Activity activity, String... requiredPermissions) {
        // 自增生成唯一请求码
        this.requestCode = REQUEST_CODE++;
        this.requiredPermissions = requiredPermissions;
        this.activity = activity;
    }

    //检查权限是否已授予
    public boolean isGranted() {
        // Android 6.0（API 23）以下无需运行时权限
        if (Build.VERSION.SDK_INT < 23) {
            //如果系统版本低于 Android 6.0，
            // 直接返回 true（权限在安装时已授予）；
            return true;
        }
        //遍历所有需要的权限，使用 checkSelfPermission 检查是否已授予，
        // 若有未授予的权限则返回 false。
        for (String p : requiredPermissions) {
            int ret = activity.checkSelfPermission(p);
            if (ret != PackageManager.PERMISSION_GRANTED) {
                return false;
            }
        }
        return true;
    }

    //调用 Activity 的 requestPermissions 方法请求权限，
    // 系统会弹出权限请求对话框。
    public void request() {
        activity.requestPermissions(requiredPermissions, requestCode);
    }

}
